package es.unileon.rnag.jgen.operadores;

import java.util.List;
import es.unileon.rnag.jgen.*;

/**
 * Interfaz de los operadores gen&eacute;ticos
 * @author Abel Mayorga Gonz&aacute;lez
 * @author Sergio Fern&aacute;ndez Mart&iacute;nez
 * @version 1.0
 */
public interface Operador {
	
	/**
	 * Aplica el operador y devuelve los cromosomas que pasan al siguiente operador
	 * @param generacion: N&uacute;mero de generaci&oacute;n actual
	 * @param poblacion: Lista de cromosomas de la poblaci&oacute;n actual
	 * @return Lista de cromosomas a los que se aplicar&aacute; el siguiente operador
	 */
	List<Cromosoma> operar(int generacion, List<Cromosoma> poblacion);

	/**
	 * Obtiene los cromosomas seleccionados por este operador para pasar a la siguiente generaci&oacute;n
	 * @return Lista de cromosomas seleccionados para pasar a la siguiente generaci&oacute;n directamente
	 */
	List<Cromosoma> getSiguienteGeneracion();
}
